#include "cpu/exec/template-start.h"

#define instr cmp


static void do_execute() {
    DATA_TYPE src = op_src->val;
    DATA_TYPE dest = op_dest->val;
    DATA_TYPE result = dest - src;

    update_eflags_pf_zf_sf((DATA_TYPE_S)result);

    cpu.eflags.CF = (dest < src);
    cpu.eflags.SF = MSB(result);
    cpu.eflags.ZF = (result == 0);
    cpu.eflags.OF = (MSB(dest) != MSB(src)) && (MSB(result) != MSB(dest));

    print_asm_template2(); 
}

#if DATA_BYTE == 2 || DATA_BYTE == 4
make_instr_helper(si2rm)
#endif

make_instr_helper(i2rm)
make_instr_helper(i2a)
make_instr_helper(r2rm)
make_instr_helper(rm2r)

#include "cpu/exec/template-end.h"